/*----------------------------------------------------------------------------*\
|
|						Public Interface to Muse Technology
|
|							     www.Muse.com
| Author : SunJun 
| Email : sundoom@msn.com
\*----------------------------------------------------------------------------*/

//////////////////////////////////////////////////////////////////////////
// $Id: Local.h,v 1.1 2009/04/03 12:46:10 sunjun Exp $
//////////////////////////////////////////////////////////////////////////

#ifndef __Local__
#define __Local__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

#if defined(_MSC_VER)
#	pragma warning(disable : 4786)	// identifier was truncated to 256 characters in the debug information
#	pragma warning(disable : 4244)  // conversion to float, possible loss of data
#	pragma warning(disable : 4699)	// creating precompiled header
#	pragma warning(disable : 4200)	// Zero-length array item at end of structure, a VC-specific extension
#	pragma warning(disable : 4100)	// unreferenced formal parameter
#	pragma warning(disable : 4514)	// unreferenced inline function has been removed
#	pragma warning(disable : 4201)	// nonstandard extension used : nameless struct/union
#	pragma warning(disable : 4710)	// inline function not expanded
#	pragma warning(disable : 4714)	// __forceinline function not expanded
#	pragma warning(disable : 4702)	// unreachable code in inline expanded function
#	pragma warning(disable : 4711)	// function selected for autmatic inlining
#	pragma warning(disable : 4725)	// Pentium fdiv bug
#	pragma warning(disable : 4127)	// Conditional expression is constant
#	pragma warning(disable : 4512)	// assignment operator could not be generated
#	pragma warning(disable : 4530)	// C++ exception handler used, but unwind semantics are not enabled
#	pragma warning(disable : 4245)	// conversion from 'enum ' to 'unsigned long', signed/unsigned mismatch
#	pragma warning(disable : 4389)	// signed/unsigned mismatch
#	pragma warning(disable : 4238)	// nonstandard extension used : class rvalue used as lvalue
#	pragma warning(disable : 4251)	// needs to have dll-interface to be used by clients of class 'ULinker'
#	pragma warning(disable : 4275)	// non dll-interface class used as base for dll-interface class
#	pragma warning(disable : 4511)	// copy constructor could not be generated
#	pragma warning(disable : 4284)	// return type is not a UDT or reference to a UDT
#	pragma warning(disable : 4355)	// this used in base initializer list
#	pragma warning(disable : 4097)	// typedef-name '' used as synonym for class-name ''
#	pragma warning(disable : 4291)	// typedef-name '' used as synonym for class-name ''
#	pragma warning(disable : 4731)	// frame pointer register 'ebp' modified by inline assembly code
#endif

#if _MSC_VER == 1400
#	pragma warning(disable : 4819)	// The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss.
#endif

//////////////////////////////////////////////////////////////////////////

#ifndef DYNAMIC_LIB
#define DYNAMIC_LIB
#endif

#ifndef MUSE_MEMORY
#define MUSE_MEMORY
#endif

//////////////////////////////////////////////////////////////////////////

#ifndef __GCN__
#include <sys/types.h>
#include <sys/stat.h>
#endif

#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>	
#include <mmsystem.h>	
#include <io.h>
#pragma comment(lib,"winmm.lib")
#endif

//////////////////////////////////////////////////////////////////////////

#include <Muse.h>
#include <MPtr.h>
#include <MMutex.h>
#include <MReference.h>
#include <MVar.h>
#include <MProperty.h>
#include <MObject.h>
#include <MThread.h>
#include <MData.h>
#include <MFile.h>
#include <MConfig.h>
#include <MOS.h>

#include <Maths.h>
#include <Vector2.h>
#include <Vector3.h>
#include <Vector4.h>
#include <Quaternion.h>
#include <Matrix.h>

#include <Texture.h>
#include <DynamicTexture.h>
#include <RenderTexture.h>
#include <DepthSurface.h>
#include <Effect.h>
#include <IndexBuffer.h>
#include <VertexBuffer.h>
#include <VertexFormat.h>
#include <Constant.h>
#include <Operation.h>
#include <Primitive.h>
#include <Clear.h>
#include <Viewport.h>
#include <Scene.h>
#include <Target.h>
#include <Context.h>

//////////////////////////////////////////////////////////////////////////

/*
====================
define api
====================
*/
#ifdef API
	#undef API
#endif
#define API DLLEXPORT

/*
====================
define api C object
====================
*/
#ifdef CAPI
	#undef CAPI
#endif
#define CAPI extern "C" DLLEXPORT

//////////////////////////////////////////////////////////////////////////

#include <Window.h>
#include <Graph.h>
#include <View.h>
#include <Dict.h>
#include <Mesh.h>

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN

//////////////////////////////////////////////////////////////////////////

	#define MAKE_FOURCC(ch0, ch1, ch2, ch3)  ((U32)(U8)(ch0)|((U32)(U8)(ch1)<<8)|((U32)(U8)(ch2)<<16)|((U32)(U8)(ch3)<<24))

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Local__

//////////////////////////////////////////////////////////////////////////
